wayland: Add support for delete event
authorJasper St. Pierre <jstpierre@mecheye.net>
Fri, 7 Feb 2014 22:16:40 +0000 (17:16 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Fri, 7 Feb 2014 23:30:12 +0000 (18:30 -0500)
gdk/wayland/gdkwindow-wayland.c
gdk/wayland/protocol/xdg-shell.xml

index b6346dd5803bab7bc454c31a274c676e7329aa36..6d80527c34d15a49a9695e2c0af57f3befc9dd14 100644 (file)
@@ -1005,6 +1005,24 @@ xdg_surface_focused_unset (void *data,
   gdk_synthesize_window_state (window, GDK_WINDOW_STATE_FOCUSED, 0);
 }
 
+static void
+xdg_surface_delete (void *data,
+                    struct xdg_surface *xdg_surface)
+{
+  GdkWindow *window = GDK_WINDOW (data);
+  GdkDisplay *display;
+  GdkEvent *event;
+
+  display = gdk_window_get_display (window);
+
+  event = gdk_event_new (GDK_DELETE);
+
+  event->any.window = window;
+  event->any.send_event = TRUE;
+
+  _gdk_wayland_display_deliver_event (display, event);
+}
+
 static const struct xdg_surface_listener xdg_surface_listener = {
   xdg_surface_ping,
   xdg_surface_configure,
@@ -1014,6 +1032,7 @@ static const struct xdg_surface_listener xdg_surface_listener = {
   xdg_surface_request_unset_maximized,
   xdg_surface_focused_set,
   xdg_surface_focused_unset,
+  xdg_surface_delete,
 };
 
 static void
index 851b2cebb9c9d96518f4ef6db1f0ea7b82e41a59..5c21f4ebc9933aa4a6f19e01f71ae07e2b3e9aae 100644 (file)
        decorations should be updated accordingly.
       </description>
     </event>
+
+    <event name="delete">
+      <description summary="surface wants to be closed">
+        The delete event is sent by the compositor when the user
+        wants the surface to be closed. This should be equivalent to
+        the user clicking the close button in client-side decorations,
+        if your application has any...
+
+        This is only a request that the user intends to close your
+        window. The client may choose to ignore this request, or show
+        a dialog to ask the user to save their data...
+      </description>
+    </event>
   </interface>
 
   <interface name="xdg_popup" version="1">